/**
 * HTML代码管理模块模拟数据简单测试
 * 直接测试模拟数据功能，不依赖API服务
 */

// 模拟localStorage
global.localStorage = {
  getItem: () => null,
  setItem: () => {},
  removeItem: () => {},
  clear: () => {}
};

// 模拟window对象
global.window = {
  location: { href: 'http://localhost:3000' }
};

// 模拟fetch
global.fetch = () => Promise.resolve({
  ok: true,
  json: () => Promise.resolve({}),
  text: () => Promise.resolve('')
});

// 模拟Vite环境变量
global.import = {
  meta: {
    env: {
      VITE_API_BASE_URL: 'http://localhost:3000/api',
      VITE_USE_MOCK_DATA: 'false',
      VITE_HTML_CODE_USE_MOCK_DATA: 'true',
      VITE_HTML_CODE_MOCK_DELAY: '500',
      VITE_API_KEY: '',
      DEV: false,
      PROD: true
    }
  }
};

async function testMockDataDirectly() {
  try {
    console.log('🧪 开始直接测试HTML代码管理模块模拟数据功能...');
    
    // 直接导入模拟数据函数
    const {
      generateMockHtmlCodes,
      getMockHtmlCodesList,
      getMockHtmlCodeDetail,
      createMockHtmlCode,
      updateMockHtmlCode,
      deleteMockHtmlCode,
      getMockHtmlCodeStats,
      validateMockHtmlCode,
      previewMockHtmlCode
    } = await import('./src/lib/api/mock-data/html-code-mock-data.js');
    
    console.log('📋 模拟数据配置:');
    console.log('  - 模拟延迟时间: 500ms');
    
    // 测试生成模拟数据
    console.log('\n📝 测试生成模拟数据...');
    const mockData = generateMockHtmlCodes(5);
    console.log('✅ 生成成功:');
    console.log('  - 数据条数:', mockData.length);
    console.log('  - 第一条数据:', {
      id: mockData[0].id,
      name: mockData[0].name,
      workspace_id: mockData[0].workspace_id,
      app_id: mockData[0].app_id
    });
    
    // 测试获取列表
    console.log('\n📋 测试获取HTML代码列表...');
    const listResult = getMockHtmlCodesList({
      page: 1,
      pageSize: 3,
      search: '页面'
    });
    console.log('✅ 列表获取成功:');
    console.log('  - 数据条数:', listResult.data?.length || 0);
    console.log('  - 分页信息:', listResult.pagination);
    
    if (listResult.data && listResult.data.length > 0) {
      const firstItem = listResult.data[0];
      
      // 测试获取详情
      console.log('\n🔍 测试获取HTML代码详情...');
      const detailResult = getMockHtmlCodeDetail(firstItem.id);
      console.log('✅ 详情获取成功:');
      console.log('  - ID:', detailResult?.id);
      console.log('  - 名称:', detailResult?.name);
      console.log('  - HTML代码长度:', detailResult?.page?.length || 0);
      
      // 测试创建HTML代码
      console.log('\n➕ 测试创建HTML代码...');
      const newHtmlCode = {
        name: '测试页面',
        page: '<html><body><h1>测试页面</h1></body></html>',
        workspace_id: 'test_workspace',
        app_id: 'test_app',
        content: '这是一个测试页面'
      };
      
      const createResult = createMockHtmlCode(newHtmlCode);
      console.log('✅ 创建成功:');
      console.log('  - 新ID:', createResult.id);
      console.log('  - 名称:', createResult.name);
      
      // 测试更新HTML代码
      console.log('\n✏️ 测试更新HTML代码...');
      const updateData = {
        name: '更新后的测试页面',
        content: '这是更新后的内容'
      };
      
      const updateResult = updateMockHtmlCode(createResult.id, updateData);
      console.log('✅ 更新成功:');
      console.log('  - 更新后名称:', updateResult?.name);
      console.log('  - 更新后内容:', updateResult?.content);
      
      // 测试更新HTML内容
      console.log('\n📝 测试更新HTML内容...');
      const newHtmlContent = '<html><body><h1>更新后的HTML内容</h1><p>这是新的内容</p></body></html>';
      const updateContentResult = updateMockHtmlCode(createResult.id, { page: newHtmlContent });
      console.log('✅ HTML内容更新成功:');
      console.log('  - 新HTML长度:', updateContentResult?.page?.length || 0);
      
      // 测试验证HTML代码
      console.log('\n🔍 测试验证HTML代码...');
      const validateResult = validateMockHtmlCode(newHtmlContent);
      console.log('✅ 验证完成:');
      console.log('  - 是否有效:', validateResult.valid);
      console.log('  - 错误信息:', validateResult.errors || '无');
      
      // 测试预览HTML代码
      console.log('\n👁️ 测试预览HTML代码...');
      const previewResult = previewMockHtmlCode(createResult.id);
      console.log('✅ 预览成功:');
      console.log('  - 预览内容长度:', previewResult.length);
      
      // 测试删除HTML代码
      console.log('\n🗑️ 测试删除HTML代码...');
      const deleteResult = deleteMockHtmlCode(createResult.id);
      console.log('✅ 删除成功:');
      console.log('  - 删除结果:', deleteResult);
    }
    
    // 测试获取统计信息
    console.log('\n📊 测试获取统计信息...');
    const statsResult = getMockHtmlCodeStats();
    console.log('✅ 统计信息获取成功:');
    console.log('  - 总数:', statsResult.total);
    console.log('  - 活跃数:', statsResult.active);
    console.log('  - 非活跃数:', statsResult.inactive);
    console.log('  - 草稿数:', statsResult.draft);
    console.log('  - 按工作空间统计:', statsResult.byWorkspace);
    console.log('  - 按应用统计:', statsResult.byApp);
    
    // 测试搜索和筛选
    console.log('\n🔍 测试搜索和筛选功能...');
    
    // 测试搜索
    const searchResult = getMockHtmlCodesList({
      search: '页面',
      page: 1,
      pageSize: 3
    });
    console.log('✅ 搜索成功，找到', searchResult.data?.length || 0, '条结果');
    
    // 测试工作空间筛选
    const workspaceResult = getMockHtmlCodesList({
      workspaceId: 'workspace1',
      page: 1,
      pageSize: 3
    });
    console.log('✅ 工作空间筛选成功，找到', workspaceResult.data?.length || 0, '条结果');
    
    // 测试应用筛选
    const appResult = getMockHtmlCodesList({
      appId: 'app1',
      page: 1,
      pageSize: 3
    });
    console.log('✅ 应用筛选成功，找到', appResult.data?.length || 0, '条结果');
    
    console.log('\n🎉 所有测试完成！模拟数据功能正常工作。');
    
  } catch (error) {
    console.error('❌ 测试失败:', error.message);
    console.error('错误详情:', error);
  }
}

// 运行测试
testMockDataDirectly();
